Communication networks use the Internet Protocol (IP) to exchange data communications, such as messages, media content, software, data files, and the like. The IP protocol employs network addresses to route IP packets between communication endpoints. The IP addresses comprise strings of characters separated by periods. One portion of the IP address indicates a network or subnetwork and another portion of the IP address indicates a host or endpoint. The network/subnetwork portion of the IP address is called a prefix. Currently, IP Version 4 (IPv4) and IP Version 6 (IPv6) are used and each has different addressing characteristics.
IP networks use various techniques to allocate IP addresses to users. The Dynamic Host Configuration Protocol (DHCP) is often used to allocate IP addresses to requesting users. The IP networks also associate alphabetic names with the IP addresses using Domain Name Systems (DNS) to convert between the easier-to-remember names and the IP addresses. Furthermore, the IP networks use Network Address Translation (NAT) systems to convert between IP addresses. NAT systems provide firewall services by converting between private and public IP addresses. NAT systems also provide compatibility services by converting between IPv6 and IPv4 addresses.
Wireless communication networks, such as Long Term Evolution (LTE) systems, provide mobile IP access to phones, computers, media players, and the like. The wireless networks allocate IP addresses using DHCP and other protocols. The wireless networks convert between names and IP addresses using DNS servers. The wireless networks translate between IP addresses and protocols using NAT systems. For example, an LTE NAT may use prefixes to translate between external public IPv4 addresses and internal private IPv6 addresses.
In many cases, multiple IP address translations may occur within the wireless network between the end-user device and the external networks. For example, devices may communicate through one another in a tethering fashion that may result in a series of address translations. Larger end-user systems in schools, hospitals, residences, and businesses may add various NAT layers to their IP communication paths. In addition, a given end-user device may have multiple parallel IP paths—each having its own set of IP translations. For example, a wireless phone may have simultaneous IP connections over LTE networks, Wireless Fidelity (WiFi) systems, Ethernet networks, Data Over Cable Service Interface Specification (DOCSIS) links, and the like.
The Port Control Protocol (PCP) enables a host on an IP network to control the NAT systems between it and its clients. PCP allows the host to efficiently control and maintain IP connectivity for the various client systems on the external side of the NAT. PCP has been adapted to allow the host to discover NAT64 translations. In particular, PCP allows a host to identify the IPv6 prefix that is used to convert between its internal IPv6 domain and its external IPv4 address. Unfortunately, PCP does not enable wireless communication devices to efficiently and effectively discover their network address allocations and translations in more complex IP systems.
Technical Overview
A wireless user device is served by a wireless network that performs Network Address Translation (NAT). The wireless user device exchanges user data using a device IP address and a network gateway exchanges the user data with external systems using an external IP address. The user device receives network information that indicates a network server and queries the network server for IP address translation data. The user device receives the IP address translation data from the network server that indicates that the external IP address is associated with the device IP address for the wireless user device. The user device transfers content delivery footprint data to a content delivery network. The content delivery footprint data indicates media content stored on the user device and indicates that the external IP address is associated with the device IP address for the user device.